package com.gulimall.cart.services;

import com.gulimall.cart.vo.Cart;
import com.gulimall.cart.vo.CartItem;

import java.util.List;

public interface CartServices {

    /**
     * 添加商品到购物车
     * @param skuId
     * @param num
     * @return
     */
    CartItem addCart(Long skuId, Integer num);

    /**
     * 获取购物车
     * @param redisKey
     * @return
     */
    Cart getSingleCart(String redisKey);

    /**
     * 获取多个购物车，并合并
     * @param redisKey
     * @return
     */
    Cart getMultiCartAndMerge(List<String> redisKey);

    /**
     * 减少商品数量
     * @param skuId 商品id
     * @param subNum 减少数量
     */
    void subProductNum(Long skuId, Integer subNum);

    /**
     * 删除商品
     * @param skuId 商品id
     */
    void deleteProduct(Long skuId);

    /**
     * 增加商品数量
     * @param skuId 商品id
     * @param addNum 增加少数量
     */
    void addProductNum(Long skuId, Integer addNum);

    /**
     * 修改商品数量
     * @param skuId 商品id
     * @param modifyNum 数量
     */
    void changeSkuNum(Long skuId, Integer modifyNum);

    /**
     * 获取用户购物车商品
     * @param redisKey
     * @return
     */
    List<CartItem> getCartItems(String redisKey);

    /**
     * 反选当前购物车的商品
     * @param skuId 商品
     */
    void changeItemCheck(Long skuId);
}
